<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>

    // ajax("请求a").then(res=>{
    //     console.log(res)
    //     ajax("请求b").then(res=>{
    //         console.log(res)
    //         ajax("请求c").then(res=>{
    //             console.log(res)
    //         })
    //     })
    // })

    // ajax("请求a").then(res=>{
    //     console.log(res)
    //     return ajax("a成功后的，请求b")
    // },res=>{
    //     console.log(res)
    //     return ajax("a失败后的，请求b")
    // }).then(res=>{
    //     console.log(res)
    //     return ajax("请求c")
    // }).then(res=>{
    //     console.log(res)
    // })


    ajax("请求a").then(res=>{
        console.log(res, "1")
        return ajax("a成功后的，请求b-1")
    }).catch(res=>{
        console.log(res, "2")
        return ajax("a失败后的，请求b-2")
    }).then(res=>{
        console.log(res, "3")
        return ajax("请求c")
    }).then(res=>{
        console.log(res, "4")
    }).catch(res=>{
        console.log(res, "5")
    })
    // a成功，1；b-1成功，3；c成功，4                √
    // a成功，1；b-1失败，2；b-2成功，3；c成功，4      √
    // a成功，1；b-1失败，2；b-2失败，5               √
    // a失败，2；b-2成功，3；c成功，4                 √
    // a成功，1；b-1失败，3
    // a成功，1；b-1失败，5
    // a失败，2；b-2失败，5                          √
    // a成功，1；b-1成功，3；c失败，5                  √
    // a失败，2；b-2成功，3；c失败，5                  √


    // 如果一个Promise的实例请求成功了，必然会执行then中的函数
    // 如果一个Promise的实例请求失败了，必然会执行catch中的函数

    // 如果then或catch的回调函数继续返回了下一个Promise实例，那么在当前的then或cathc之后的方法就是在处理这个新返回的Promise实例






    function ajax(url){
        return new Promise((resolve, reject)=>{
            setTimeout(()=>{
                resolve(url + "，请求成功")
            }, Math.random()*1000)

            setTimeout(()=>{
                reject(url + "，请求失败了")
            }, Math.random()*1000)
        })
    }





</script>
</html>
